package com.xinnet.mms.login.service;

import java.sql.SQLException;
import java.util.List;

import org.springframework.stereotype.Service;

import com.xinnet.core.utils.page.PageView;
import com.xinnet.mms.entity.Emp;

@Service
public interface EmpService {
	/**
	 * 根据登录名称查询这个员工
	 * @param loginName
	 * @return Emp
	 */
	public Emp queryEmpByLoginName(String loginName);
	/**
	 * 根据员工的属性查询员工
	 * @param emp
	 * @return List<Emp> 
	 */
	public List<Emp> getEmpList(Emp emp);
	/**
	 * 获取所有员工
	 * @return List<Emp>
	 */
	public List<Emp> getAllEmpList();
	
	public List<Emp> getEmpListByDeptIdStr(String deptIdStr);
	
	public List<Emp> getEmpListByDeptIdStrOrNoDeptRoleId(String deptIdStr);

	public List<Emp> getEmpSetApprovalListByDeptIdStr(String deptIdStr);
	
	public List<Emp> getEmpListExceptDeptLeader(String deptId);
	
	/**
	 * 更新员工
	 * @param emp
	 */
	public void updateEmpAccount(Emp emp);
	/**
	 * 更新员工角色
	 * @param emp
	 */
	public void updateEmpRole(Emp emp);
	/**
	 * 批量更新员工
	 * @param empnoStr 以逗号分隔的员工ID
	 * @param deptId 部门ID
	 * @param roleId 角色ID
	 * @param isResponsible 是否为组织负责人
	 */
	public void bathUpdateEmpRole(String empnoStr,String deptId,String roleId,String isResponsible);
	
	public void addEmp(Emp emp);
	
	public List<Emp> getEmpByDeptAndChildDept(String deptId);
	
	public List<Emp> getEmpListForChildDept(String deptId);
	
	public void updateEmp(Emp emp);
	public void updateEmpByHyManagerMD5Salt(Emp emp);
	/**
	 * 
	 * 功能描述：根据员工编号获取员工
	 *
	 * @param empno
	 * @return
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年3月28日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public Emp getEmpbyEmpno(String empno);
	/**
	 * 
	 * 功能描述：根据员工编号删除员工
	 *
	 * @param empno
	 *
	 * @author 王湛智[wangzhanzhi@xinnet.com]
	 *
	 * @since 2014年3月28日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public void delEmpByEmpno(String empno);
	
	
	public List<Emp> queryEmpList(Emp emp);
	
	public List<Emp> getEmpListByParam(Emp emp);
	
	public List<Emp> getEmpListByParamOrNoDeptRoleId(Emp emp);	
	/**
	 * 
	 *
	 * 功能描述：根据员工iD找到员工的分公司
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年7月18日
	 *
	 */
	public String getCompanyIdFromEmp(String empno) throws SQLException;
	/**
	 * 
	 *
	 * 功能描述：取得指定产品code对应部门的销售
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年6月23日
	 *
	 */
	public Emp getSpecialEmpByProductCode(String productCode) throws Exception;
	/**
	 * 
	 *
	 * 功能描述：修改员工剩余推送个数
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年8月6日
	 *
	 */
	public void updateSurplusLimit(Emp emp) throws SQLException;
}
